package show.marvelous.domain.chessgame.service;

import show.marvelous.domain.chessgame.aggregate.ChessGame;
import show.marvelous.domain.chessgame.constans.PieceCodeEnum;

/**
 * The interface Chess service.
 * @author Kris 2021/8/23
 */
public interface IChessGameService{

    /**
     * Shake dice integer.
     *
     * @param gameId the game id
     * @return the integer
     */
    Integer shakeDice(long gameId);

    /**
     * Build move event.
     *
     * @param gameId the game id
     * @param code the code
     */
    void move(long gameId, PieceCodeEnum code);

    /**
     * Start game chess game.
     *
     * @return the chess game
     */
    ChessGame initNewGame();

    /**
     * Gets game.
     *
     * @param gameId the game id
     * @return the game
     */
    ChessGame loadGame(Long gameId);
}
